package logica.control;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JFrame;

import presentacion.ventana.JFVistaGeneral;

public class Informe {
	private ArrayList pseudoTabla;

	public Informe(ResultSet res) throws SQLException {
		pseudoTabla = new ArrayList();
		pseudoTabla.add(obtenerCabecera(res));
		pseudoTabla.add(obtenerDatos(res));
		crearTabla(pseudoTabla);
	}

	private String[] obtenerCabecera(ResultSet res) throws SQLException {
		int columnas;

		String[] cabecera;
		columnas = res.getMetaData().getColumnCount();
		cabecera = new String[columnas];
		res.first();

		for (int i = 0, j = 1; j <= res.getMetaData().getColumnCount(); i++, j++) {
			cabecera[i] = res.getMetaData().getColumnName(j);
		}
		return cabecera;
	}

	private String[][] obtenerDatos(ResultSet res) throws SQLException {
		String[][] datos;
		int filas, columnas;

		res.last();
		filas = res.getRow();
		columnas = res.getMetaData().getColumnCount();

		res.beforeFirst();
		datos = new String[filas][columnas];
		res.first();

		for (int i = 0; i < filas; i++) {
			for (int j = 0, h = 1; j < columnas; j++, h++) {
				datos[i][j] = res.getString(h);
			}
			res.next();
		}

		return datos;
	}

	private void crearTabla(ArrayList pstbl) {
		Iterator it = pstbl.iterator();
		String cab[] = (String[]) it.next();
		String dat[][] = (String[][]) it.next();

		JFVistaGeneral tabla = new JFVistaGeneral(dat, cab);
		tabla.setTitle("Resultado de la Consulta");
		tabla.setLocationRelativeTo(null);
		tabla.setResizable(true);
		tabla.setExtendedState(JFrame.MAXIMIZED_BOTH);
		tabla.setVisible(true);
	}

}
